package com.todo.sight.infrastructure.repository;


import com.todo.common.common.entity.response.page.PageResult;
import com.todo.sight.infrastructure.entity.condition.SightBaseCondition;

import com.todo.sight.infrastructure.entity.domain.SightInfoDO;
import com.todo.sight.infrastructure.entity.po.SightBasePO;

import java.util.List;

/**
 * (SightBase)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:04
 */
public interface SightInfoRepository {

    /**
     * 新增景点详情信息
     *
     * @param sightInfoDO
     * @return
     */
    Boolean insertSightInfoDetail(SightInfoDO sightInfoDO);

    /**
     * 更新景点详情信息
     *
     * @param sightInfoDO
     * @return
     */
    Boolean updateSightInfoDetailById(SightInfoDO sightInfoDO);

    /**
     * 根据主键id查询景点详情信息
     *
     * @param id
     * @return
     */
    SightInfoDO querySightInfoDetailById(Long id);

    /**
     * 根据主键id查询景点信息
     *
     * @param id
     * @return
     */
    SightBasePO querySightBasePOById(Long id);

    /**
     * 根据景点POI查询景点详情信息
     *
     * @param poiId
     * @return
     */
    SightInfoDO querySightInfoDetailByPOI(Long poiId);

    /**
     * 根据主键删除景点详情信息
     *
     * @param id
     * @return
     */
    Boolean removeSightBasePOById(Long id);

    /**
     * 根据景点POI删除景点详情信息
     *
     * @param poiId
     * @return
     */
    Boolean removeSightByPOI(Long poiId);

    /**
     * 多条件查询景点详情信息
     *
     * @param sightBaseCondition
     * @return
     */
    PageResult<SightBasePO> querySightBaseByCondition(SightBaseCondition sightBaseCondition);

    /**
     * 多条件查询景点详情信息数量
     *
     * @param sightBaseCondition
     * @return
     */
    Long queryCountByCondition(SightBaseCondition sightBaseCondition);

    /**
     * 展示/隐藏景点信息
     *
     * @param id
     * @param show
     * @return
     */
    Boolean showSightBasePOById(Long id, Integer show);

    /**
     * 根据id集合查询景点信息
     * @param poiIdList
     * @return
     */
    List<SightBasePO> querySightInfoByPoiIdList(List<Long> poiIdList);
}
